package ar.edu.unq.tpi.pconc.tpconcurbattle;

import java.util.ArrayList;
import java.util.List;

public class Ciudad extends Bloqueable {
	
	private Bando tomadaPor;
	private List<Unidad> unidades;
	private List<Ciudad> destinos;
//	private List<Bando> tomadasAnteriormentePor;
	
	public Ciudad(int id, Bando tomadaPor) {
		super(id);
		this.tomadaPor = tomadaPor;
//		this.tomadasAnteriormentePor = new ArrayList<Bando>();
		this.unidades = new ArrayList<Unidad>();
		
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				while (true) {
					String[] sUnidad = Ciudad.this.getRecepcionDeUnidades()
							.receive().split(" ");
					Unidad unidad = new Unidad(sUnidad[0], sUnidad[1],
							sUnidad[2], sUnidad[3], sUnidad[4]);
					Ciudad.this.bloquear();
					unidad.chequearMover(Ciudad.this);
					if (unidad.conVida) {
						unidad.setUbicacion(Ciudad.this);
						new Thread(unidad).start();
					}
					Ciudad.this.desbloquear();
				}
			}
		}).start();
	}

	public Bando getTomadaPor() {
		return this.tomadaPor;
	}

	public void setTomadaPor(Bando tomadaPor) {
		this.tomadaPor = tomadaPor;
	}

	public List<Unidad> getUnidades() {
		return unidades;
	}

	public void setUnidades(List<Unidad> unidades) {
		this.unidades = unidades;
	}

	public List<Ciudad> getDestinos() {
		return this.destinos;
	}

	public void setDestinos(List<Ciudad> destinos) {
		this.destinos = destinos;
	}
	
	/**Pregunta si hay alguna unidad en el lugar**/
	public boolean hayAlguien() {
		return this.getUnidades().size() > 0;
	}

	public void quitarUnidad(Unidad unidad) {
		this.getUnidades().remove(unidad);
	}

	public void agregarUnidad(Unidad unidad) {
		this.getUnidades().add(unidad);
	}

	public Unidad getPrimeraUnidad() {
		return this.getUnidades().get(0);
	}

}
